home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 October: Mac OS SDK / Dev.CD Oct 97 SDK1.toast / Development Kits (Disc 1) / Interfaces&Libraries / Universal / Interfaces / PInterfaces / OSUtils.p < prev    next >
Encoding:
Text File  |  1997-08-12  |  8.1 KB  |  338 lines  |  [TEXT/MPS ]

  1. {
  2.      File:        OSUtils.p
  3.  
  4.      Contains:    OS Utilities Interfaces.
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Release:    Universal Interfaces 3.0.1
  8.  
  9.      Copyright:    © 1985-1997 by Apple Computer, Inc., all rights reserved
  10.  
  11.      Bugs?:        Please include the the file and version information (from above) with
  12.                  the problem description.  Developers belonging to one of the Apple
  13.                  developer programs can submit bug reports to:
  14.  
  15.                      devsupport@apple.com
  16.  
  17. }
  18. {$IFC UNDEFINED UsingIncludes}
  19. {$SETC UsingIncludes := 0}
  20. {$ENDC}
  21.  
  22. {$IFC NOT UsingIncludes}
  23.  UNIT OSUtils;
  24.  INTERFACE
  25. {$ENDC}
  26.  
  27. {$IFC UNDEFINED __OSUTILS__}
  28. {$SETC __OSUTILS__ := 1}
  29.  
  30. {$I+}
  31. {$SETC OSUtilsIncludes := UsingIncludes}
  32. {$SETC UsingIncludes := 1}
  33.  
  34. {$IFC UNDEFINED __TYPES__}
  35. {$I Types.p}
  36. {$ENDC}
  37. {$IFC UNDEFINED __MIXEDMODE__}
  38. {$I MixedMode.p}
  39. {$ENDC}
  40. {  HandToHand and other memory utilties were moved to MacMemory.h }
  41. {$IFC UNDEFINED __MACMEMORY__}
  42. {$I MacMemory.p}
  43. {$ENDC}
  44. {  GetTrapAddress and other trap table utilties were moved to Patches.h }
  45. {$IFC UNDEFINED __PATCHES__}
  46. {$I Patches.p}
  47. {$ENDC}
  48. {  Date and Time utilties were moved to DateTimeUtils.h }
  49. {$IFC UNDEFINED __DATETIMEUTILS__}
  50. {$I DateTimeUtils.p}
  51. {$ENDC}
  52.  
  53.  
  54. {$PUSH}
  55. {$ALIGN MAC68K}
  56. {$LibExport+}
  57.  
  58.  
  59. CONST
  60.     useFree                        = 0;
  61.     useATalk                    = 1;
  62.     useAsync                    = 2;
  63.     useExtClk                    = 3;                            { Externally clocked }
  64.     useMIDI                        = 4;
  65.  
  66.     false32b                    = 0;                            { 24 bit addressing error }
  67.     true32b                        = 1;                            { 32 bit addressing error }
  68.  
  69.                                                                 {  result types for RelString Call  }
  70.     sortsBefore                    = -1;                            { first string < second string }
  71.     sortsEqual                    = 0;                            { first string = second string }
  72.     sortsAfter                    = 1;                            { first string > second string }
  73.  
  74.     dummyType                    = 0;
  75.     vType                        = 1;
  76.     ioQType                        = 2;
  77.     drvQType                    = 3;
  78.     evType                        = 4;
  79.     fsQType                        = 5;
  80.     sIQType                        = 6;
  81.     dtQType                        = 7;
  82.     nmType                        = 8;
  83.  
  84.  
  85. TYPE
  86.     QTypes                                = SignedByte;
  87.     SysParmTypePtr = ^SysParmType;
  88.     SysParmType = PACKED RECORD
  89.         valid:                    UInt8;
  90.         aTalkA:                    UInt8;
  91.         aTalkB:                    UInt8;
  92.         config:                    UInt8;
  93.         portA:                    INTEGER;
  94.         portB:                    INTEGER;
  95.         alarm:                    LONGINT;
  96.         font:                    INTEGER;
  97.         kbdPrint:                INTEGER;
  98.         volClik:                INTEGER;
  99.         misc:                    INTEGER;
  100.     END;
  101.  
  102.     SysPPtr                                = ^SysParmType;
  103.     QElemPtr = ^QElem;
  104.     QElem = RECORD
  105.         qLink:                    QElemPtr;
  106.         qType:                    INTEGER;
  107.         qData:                    ARRAY [0..0] OF INTEGER;
  108.     END;
  109.  
  110.     QHdrPtr = ^QHdr;
  111.     QHdr = RECORD
  112.         qFlags:                    INTEGER;
  113.         qHead:                    QElemPtr;
  114.         qTail:                    QElemPtr;
  115.     END;
  116.  
  117.  
  118.  
  119.     DeferredTaskProcPtr = Register68kProcPtr;  { PROCEDURE DeferredTask(dtParam: LONGINT); }
  120.  
  121.     DeferredTaskUPP = UniversalProcPtr;
  122.  
  123. CONST
  124.     uppDeferredTaskProcInfo = $0000B802;
  125.  
  126. FUNCTION NewDeferredTaskProc(userRoutine: DeferredTaskProcPtr): DeferredTaskUPP;
  127.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  128.     INLINE $2E9F;
  129.     {$ENDC}
  130.  
  131. PROCEDURE CallDeferredTaskProc(dtParam: LONGINT; userRoutine: DeferredTaskUPP);
  132.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  133.     {To be implemented:  Glue to move parameters into registers.}
  134.     {$ENDC}
  135.  
  136. TYPE
  137.     DeferredTaskPtr = ^DeferredTask;
  138.     DeferredTask = RECORD
  139.         qLink:                    QElemPtr;
  140.         qType:                    INTEGER;
  141.         dtFlags:                INTEGER;
  142.         dtAddr:                    DeferredTaskUPP;
  143.         dtParam:                LONGINT;
  144.         dtReserved:                LONGINT;
  145.     END;
  146.  
  147.     MachineLocationPtr = ^MachineLocation;
  148.     MachineLocation = RECORD
  149.         latitude:                Fract;
  150.         longitude:                Fract;
  151.         CASE INTEGER OF
  152.         0: (
  153.             dlsDelta:            SInt8;                                    {  signed byte; daylight savings delta  }
  154.             );
  155.         1: (
  156.             gmtDelta:            LONGINT;                                {  use low 24-bits only  }
  157.             );
  158.     END;
  159.  
  160.  
  161. FUNCTION IsMetric: BOOLEAN;
  162.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  163.     INLINE $3F3C, $0004, $A9ED;
  164.     {$ENDC}
  165. FUNCTION GetSysPPtr: SysPPtr;
  166.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  167.     INLINE $2EBC, $0000, $01F8;
  168.     {$ENDC}
  169.  
  170. {
  171.     NOTE: SysBeep() has been moved to Sound.h.  
  172.           We could not automatically #include Sound.h in this file
  173.           because Sound.h indirectly #include's OSUtils.h which
  174.           would make a circular include.
  175. }
  176. FUNCTION DTInstall(dtTaskPtr: DeferredTaskPtr): OSErr;
  177.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  178.     INLINE $205F, $A082, $3E80;
  179.     {$ENDC}
  180.  
  181.  
  182. FUNCTION GetMMUMode: SInt8;
  183.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  184.     INLINE $1EB8, $0CB2;
  185.     {$ENDC}
  186. PROCEDURE SwapMMUMode(VAR mode: SInt8);
  187.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  188.     INLINE $205F, $1010, $A05D, $1080;
  189.     {$ENDC}
  190. PROCEDURE Delay(numTicks: LONGINT; VAR finalTicks: LONGINT);
  191.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  192.     INLINE $225F, $205F, $A03B, $2280;
  193.     {$ENDC}
  194.  
  195. FUNCTION WriteParam: OSErr;
  196. PROCEDURE Enqueue(qElement: QElemPtr; qHeader: QHdrPtr);
  197.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  198.     INLINE $225F, $205F, $A96F;
  199.     {$ENDC}
  200. FUNCTION Dequeue(qElement: QElemPtr; qHeader: QHdrPtr): OSErr;
  201.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  202.     INLINE $225F, $205F, $A96E, $3E80;
  203.     {$ENDC}
  204. FUNCTION SetCurrentA5: LONGINT;
  205.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  206.     INLINE $2E8D, $2A78, $0904;
  207.     {$ENDC}
  208. FUNCTION SetA5(newA5: LONGINT): LONGINT;
  209.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  210.     INLINE $2F4D, $0004, $2A5F;
  211.     {$ENDC}
  212. FUNCTION InitUtil: OSErr;
  213.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  214.     INLINE $A03F, $3E80;
  215.     {$ENDC}
  216.  
  217. {$IFC TARGET_CPU_PPC }
  218. PROCEDURE MakeDataExecutable(baseAddress: UNIV Ptr; length: LONGINT);
  219. {$ENDC}  {TARGET_CPU_PPC}
  220.  
  221. {$IFC TARGET_CPU_68K }
  222. FUNCTION SwapInstructionCache(cacheEnable: BOOLEAN): BOOLEAN;
  223. PROCEDURE FlushInstructionCache;
  224.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  225.     INLINE $7001, $A098;
  226.     {$ENDC}
  227. FUNCTION SwapDataCache(cacheEnable: BOOLEAN): BOOLEAN;
  228. PROCEDURE FlushDataCache;
  229.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  230.     INLINE $7003, $A098;
  231.     {$ENDC}
  232. PROCEDURE FlushCodeCache;
  233.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  234.     INLINE $A0BD;
  235.     {$ENDC}
  236. FUNCTION FlushCodeCacheRange(address: UNIV Ptr; count: LONGINT): OSErr;
  237.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  238.     INLINE $225F, $205F, $7009, $A098, $3E80;
  239.     {$ENDC}
  240. {$ENDC}  {TARGET_CPU_68K}
  241.  
  242. PROCEDURE ReadLocation(VAR loc: MachineLocation);
  243.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  244.     INLINE $205F, $203C, $000C, $00E4, $A051;
  245.     {$ENDC}
  246. PROCEDURE WriteLocation({CONST}VAR loc: MachineLocation);
  247.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  248.     INLINE $205F, $203C, $000C, $00E4, $A052;
  249.     {$ENDC}
  250.  
  251.  
  252. {$IFC OLDROUTINENAMES }
  253. FUNCTION IUMetric: BOOLEAN;
  254.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  255.     INLINE $3F3C, $0004, $A9ED;
  256.     {$ENDC}
  257. {$ENDC}  {OLDROUTINENAMES}
  258.  
  259. {
  260.     NOTE: SysEnvirons is obsolete.  You should be using Gestalt.
  261. }
  262. { Environs Equates }
  263.  
  264. CONST
  265.     curSysEnvVers                = 2;                            { Updated to equal latest SysEnvirons version }
  266.  
  267.  
  268. TYPE
  269.     SysEnvRecPtr = ^SysEnvRec;
  270.     SysEnvRec = RECORD
  271.         environsVersion:        INTEGER;
  272.         machineType:            INTEGER;
  273.         systemVersion:            INTEGER;
  274.         processor:                INTEGER;
  275.         hasFPU:                    BOOLEAN;
  276.         hasColorQD:                BOOLEAN;
  277.         keyBoardType:            INTEGER;
  278.         atDrvrVersNum:            INTEGER;
  279.         sysVRefNum:                INTEGER;
  280.     END;
  281.  
  282.  
  283. CONST
  284.                                                                 {  Machine Types  }
  285.     envMac                        = -1;
  286.     envXL                        = -2;
  287.     envMachUnknown                = 0;
  288.     env512KE                    = 1;
  289.     envMacPlus                    = 2;
  290.     envSE                        = 3;
  291.     envMacII                    = 4;
  292.     envMacIIx                    = 5;
  293.     envMacIIcx                    = 6;
  294.     envSE30                        = 7;
  295.     envPortable                    = 8;
  296.     envMacIIci                    = 9;
  297.     envMacIIfx                    = 11;
  298.  
  299.                                                                 {  CPU types  }
  300.     envCPUUnknown                = 0;
  301.     env68000                    = 1;
  302.     env68010                    = 2;
  303.     env68020                    = 3;
  304.     env68030                    = 4;
  305.     env68040                    = 5;
  306.  
  307.                                                                 {  Keyboard types  }
  308.     envUnknownKbd                = 0;
  309.     envMacKbd                    = 1;
  310.     envMacAndPad                = 2;
  311.     envMacPlusKbd                = 3;
  312.     envAExtendKbd                = 4;
  313.     envStandADBKbd                = 5;
  314.     envPrtblADBKbd                = 6;
  315.     envPrtblISOKbd                = 7;
  316.     envStdISOADBKbd                = 8;
  317.     envExtISOADBKbd                = 9;
  318.  
  319. FUNCTION SysEnvirons(versionRequested: INTEGER; VAR theWorld: SysEnvRec): OSErr;
  320.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  321.     INLINE $205F, $301F, $A090, $3E80;
  322.     {$ENDC}
  323.  
  324.  
  325.  
  326.  
  327.  
  328. {$ALIGN RESET}
  329. {$POP}
  330.  
  331. {$SETC UsingIncludes := OSUtilsIncludes}
  332.  
  333. {$ENDC} {__OSUTILS__}
  334.  
  335. {$IFC NOT UsingIncludes}
  336.  END.
  337. {$ENDC}
  338.